package cn.stylefeng.guns.modular.gridsystem.enums;

import cn.stylefeng.guns.core.annotion.ExpEnumType;
import cn.stylefeng.guns.core.exception.enums.abs.AbstractBaseExceptionEnum;
import cn.stylefeng.guns.core.factory.ExpEnumCodeFactory;
import cn.stylefeng.guns.modular.gridsystem.constants.BizExpEnumConstant;
import lombok.Getter;

/**
 * 网关任务下发表相关枚举
 *
 * @author zxw
 * @date 2022/10/31 14:34
 */
@Getter
@ExpEnumType(module = BizExpEnumConstant.GUNS_MAIN_MODULE_EXP_CODE, kind = BizExpEnumConstant.MATERIAL_EXCEPTION_ENUM)
public enum GatewayExceptionEnum implements AbstractBaseExceptionEnum {

    /**
     * 设备编号错误
     */
    CODE_ERROR(1, "设备编号错误"),

    /**
     * 网关不存在
     */
    NOT_EXIST(2, "网关不存在"),

    /**
     * 网关没有配置算法分组号
     */
    NOT_CONFIG_GROUP_ID(3, "网关没有配置算法分组号"),

    /**
     * 网关没有配置算法ID
     */
    NOT_CONFIG_ACCESS_TOKEN(4, "网关没有配置算法ID"),

    /**
     * 网关编号已存在
     */
    GATEWAY_CODE_EXIST(5, "网关编号已存在"),

    /**
     * 关联站点不存在
     */
    STATION_NOT_EXIST(6, "关联站点不存在"),

    /**
     * 远程任务响应失败
     */
    REMOTE_GATEWAY_TASK_FAILED(7, "远程任务响应失败"),

    /**
     * 远程任务不存在
     */
    REMOTE_GATEWAY_TASK_NOT_EXIST(8, "远程任务不存在"),

    /**
     * 同一站点下相同名称的网关已存在
     */
    SAME_STATION_NAME_GATEWAY_EXIST(9, "同一站点下相同名称的网关已存在"),

    /**
     * 批量授权申请失败
     */
    BATCH_APPLICATION_GRANT_FAILED(10, "批量授权申请失败"),

    /**
     * 没有在线的未绑定的的网关
     */
    NO_WAIT_AUDIT_GATEWAY_LIST(11, "没有在线的未绑定的的网关"),

    /**
     * 同步授权申请状态失败
     */
    SYNC_GRANT_STATUS_FAILED(13, "同步授权申请状态失败");

    private final Integer code;

    private final String message;

    GatewayExceptionEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public Integer getCode() {
        return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code);
    }

    @Override
    public String getMessage() {
        return message;
    }

}
